package cn.com.zero.common.auth.service;

import cn.com.zero.api.auth.vo.LockedUserVO;
import cn.com.zero.db.vo.PageParamsVO;
import cn.com.zero.db.vo.PageVO;

import java.util.Date;
import java.util.List;

/**
 * @author xiongxj
 * @version 1.0.0
 * @Description 锁定用户相关操作的service接口
 * @createTime 2023/3/29 15:27
 */
public interface ILockedUserService {

    /**
     * 获取指定端的所有被锁定的用户
     *
     * @param userBelongToSide 用户所属的端
     * @param pageParams       分页参数
     * @param searchUserIds    搜索条件，按照用户ID搜索，支持精确搜索
     * @param loginIp          搜索条件，按照登录IP搜索，支持模糊搜索
     * @param lockedBeginTime  搜索条件，按照锁定时间搜索，搜索的开始时间
     * @param lockedEndTime    搜索条件，按照锁定时间搜索，搜索的结束时间
     * @return 所有被锁定用户信息，默认按照锁定时间正序
     */
    PageVO<LockedUserVO> getLockedUsers(String userBelongToSide, PageParamsVO pageParams,
                                        List<String> searchUserIds, String loginIp,
                                        Date lockedBeginTime, Date lockedEndTime);

    /**
     * 解锁指定端的用户
     *
     * @param userBelongToSide 用户所属的端
     * @param userId           用户ID
     * @return 解除锁定结果，true：操作成功；false：操作失败
     */
    boolean unlockUser(String userBelongToSide, String userId);
}
